package com.xuecheng.api.course;

import com.xuecheng.framework.domain.course.CourseBase;
import com.xuecheng.framework.domain.course.CourseMarket;
import com.xuecheng.framework.domain.course.CoursePic;
import com.xuecheng.framework.domain.course.Teachplan;
import com.xuecheng.framework.domain.course.TeachplanMedia;
import com.xuecheng.framework.domain.course.ext.CourseInfo;
import com.xuecheng.framework.domain.course.ext.CourseView;
import com.xuecheng.framework.domain.course.ext.TeachplanNode;
import com.xuecheng.framework.domain.course.request.CourseListRequest;
import com.xuecheng.framework.domain.course.response.AddCourseResult;
import com.xuecheng.framework.domain.course.response.CoursePublishResult;
import com.xuecheng.framework.model.response.QueryResponseResult;
import com.xuecheng.framework.model.response.ResponseResult;

import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;

@Api(value = "课程管理接口",description = "课程管理接口，提供课程的增、删、改、查",tags= {"课程管理"})
public interface CourseControllerApi {
    
    @ApiOperation("课程计划查询")
    TeachplanNode findTeachPlanList(String courseId);
    
    @ApiOperation("课程计划添加")
    ResponseResult addTeachplan(Teachplan teachplan);
    
    @ApiOperation("查询课程列表")
    QueryResponseResult<CourseInfo> findCourseList(int page,int size,CourseListRequest courseListRequest);
    
    @ApiOperation("添加课程基础信息")
    AddCourseResult addCourseBase(CourseBase courseBase);
    
    @ApiOperation("获取课程基础信息")
    CourseBase getCourseBaseById(String courseId) throws RuntimeException;
    
    @ApiOperation("更新课程基础信息")
    ResponseResult updateCourseBase(String id,CourseBase courseBase);
    
    @ApiOperation("查询课程营销信息")
    CourseMarket getCourseMarketById(String courseId) throws RuntimeException;
    
    @ApiOperation("更新课程营销信息")
    ResponseResult updateCourseMarket(String id,CourseMarket courseMarket);
    
    @ApiOperation("添加课程图片")
    ResponseResult addCoursePic(String courseId,String pic);
    
    @ApiOperation("查询课程图片")
    CoursePic findCoursePic(String courseId);
    
    @ApiOperation("删除课程图片")
    ResponseResult deleteCoursePic(String courseId);
    
    @ApiOperation("课程视图查询")
    CourseView courseView(String id);
    
    @ApiOperation("课程预览")
    CoursePublishResult preview(String id);
    
    @ApiOperation("课程发布")
    CoursePublishResult publish(String id);
    
    @ApiOperation("关联课程计划与媒资文件")
    ResponseResult saveMedia(TeachplanMedia teachplanMedia);

}
